#include <iostream>
#include <vector>
using namespace std;

double sb(vector<vector<int> >& s){
    vector<vector<double> > dp(s.size(),vector<double>(s[0].size(),0));
    for(int i = 1;i < s.size();i++){
        for(int j = 1;j < s[0].size();j++){
            if(s[i][j] == 1) dp[i][j] == 0;
            else if(i == 1 && j == 1)  dp[i][j] = 1.0;
            else if(i == s.size() - 1 && j == s[0].size() - 1) dp[i][j] = dp[i-1][j] + dp[i][j-1];
            else if(i == s.size() - 1) dp[i][j] = dp[i-1][j] * 0.5 + dp[i][j-1];
            else if(j == s[0].size() - 1) dp[i][j] = dp[i][j-1] * 0.5 + dp[i-1][j];
            else if(i == 1) dp[i][j] = dp[i][j-1] * 0.5;
            else if(j == 1) dp[i][j] = dp[i-1][j] * 0.5;
            else dp[i][j] = dp[i-1][j] * 0.5 + dp[i][j-1] * 0.5;
        }
    }
     return dp[s.size() - 1][s[0].size() - 1];
}
int main(){
    int N,M,K;
    while(cin>>N>>M>>K){
     vector<vector<int> > s(N+1,vector<int>(M+1,0));
     int x,y;
     for(int i = 0;i < K;i++){
        cin>>x>>y;
        s[x][y] = 1;
     }
     double ret = sb(s);
     printf("%.2lf\n",ret);
    }
    return 0;
}
